{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "30e3245f",
   "metadata": {},
   "source": [
    "# 第1周\n",
    "* author:邱星倩\n",
    "* time：第1周周二上午\n",
    "* link: [内容参考](https://gitee.com/xzhichao/api_ai_ml/tree/master/week01)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bcc929a",
   "metadata": {},
   "source": [
    "&emsp;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df488379",
   "metadata": {},
   "source": [
    "# 本章内容\n",
    "> 1）了解API  \n",
    "> 2）人工智能  \n",
    "> 3）机器学习  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e73595f",
   "metadata": {},
   "source": [
    "&emsp;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "506e9d3f",
   "metadata": {},
   "source": [
    "# 1.API"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25aa34e4",
   "metadata": {},
   "source": [
    "## （1）API是什么\n",
    "> [API是什么](https://www.bilibili.com/video/av85460523?from=search&seid=12041514543725396378&spm_id_from=333.337.0.0)  \n",
    "> API是在应用、设备、数据中起连接作用的接口，去传递数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "142cc260",
   "metadata": {},
   "source": [
    "## （2）API的商业案例"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f698f8b3",
   "metadata": {},
   "source": [
    "### 企业通常以3种不同的方式使用API：\n",
    "> * 构建自己的API供内部使用（常见，通常与程序员对接）  \n",
    "> * 与第三方API集成  \n",
    ">> * 通过与其他公司的API连接，您的产品可以快速添加功能，否则那些功能和工具需要花数年来构建。 \n",
    ">> * 产品经理通常和工程团队讨论功能集的各项任务，决定哪些任务将通过第三方的API来执行。  \n",
    "> * 为您的客户构建和公开您自己的API  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "43c28793",
   "metadata": {},
   "source": [
    "###  示例\n",
    "> * 用例1:豆瓣API、网易云音乐API  \n",
    ">> * 将豆瓣API嵌入到您的微信小程序开发中  \n",
    ">> * 允许用户使用网易云音乐 API在您的网站上搜索音乐  \n",
    "> * 用例2:Google Maps API，高德地图API\n",
    ">> * 大众点评通过您的附近位置搜索所需要的分类列表  \n",
    ">> * 饿了么通过地图路径规划给予骑手最优路线  \n",
    "> * 用例3:支付宝，微信支付 API  \n",
    ">> * 为商家处理付款  \n",
    ">> * 为客户设置每月定期订阅  \n",
    "> * 用例4:face++，Azure 认知服务  \n",
    ">> * 通过人脸识别提供人脸精确位置坐标  \n",
    ">> * Azure API 提供人工智能服务接口  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "16239a46",
   "metadata": {},
   "source": [
    "## （3）API相关知识点"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5478ad4f",
   "metadata": {},
   "source": [
    "### 1.有关API的10个最重要的术语\n",
    "> * (HTTP) Requests and Responses： HTTP请求和响应\n",
    "> * REST：以资源为中心设计的互联系统表达型式\n",
    "> * (HTTP) Methods：HTTP方法\n",
    "> * (API) Endpoints：API端点\n",
    "> * API documentation：API文档\n",
    "> * API calls：API调用\n",
    "> * (HTTP) Payloads：HTTP酬载\n",
    "> * (HTTP) Response codes：HTTP响应状态码\n",
    "> * (HTTP) Headers：HTTP首部\n",
    "> * Authentication：认证\n",
    "\n",
    "### 2.HTTP请求和响应\n",
    "> * (HTTP) Requests and Responses (HTTP请求和响应)，指的是HTTP协议中，用于客户端和服务器端之间的通信。HTTP协议通过请求和响应的交换达成通信。\n",
    "> * 请求访问资源的一端称为客户端 (client side)\n",
    "> * 提供资源响应的一端称为服务器端 (server side)\n",
    "> * 请求必定由客户端发出，而服务器端回复响应\n",
    "> * HTTP 是不保存状态，即无状态（stateless）的协议\n",
    "> * Web网页及API都使用HTTP协议\n",
    "> * API文档应明白交待，请求应该是什么，以及对映的响应中期待回传结果是什么。\n",
    "> * API使用HTTP请求和响应用例：\n",
    ">> * 向Spotify API发送请求(Requests)，告诉Spotify我想要检索哪个专辑，使用某专辑ID请求歌曲列表\n",
    ">> * Spotify响应(Responses)，以'JSON'语言的数据格式响应某专辑中的歌曲列表\n",
    "\n",
    "### 3.REST：以资源为中心设计的互联系统表达型式\n",
    "* REST （Representational State Transfer）是以资源为中心设计的互联系统架构表达型式。\n",
    "> * RESTful API的基本特征是：基于资源（Resource-based）的表达型式（Representations）。资源常是名词，如 一个人，一个用户，一个pdf，一个地址等。 名词可以用各种表达型式。\n",
    "> * 调用API获得的响应是在客户端和服务器之间传输的资源的表达型式。\n",
    "> * JSON是REST API常用的资源表达型式语言。\n",
    "> * RESTful架构的6个准则要件：\n",
    ">> * 统一接口（通常使用HTTP及资源，HTTP动词作为操作行为：如GET，PUT，POST，DELETE）\n",
    ">> * 无状态 - 每个请求都有足够的信息供服务器处理消息。\n",
    ">> * 客户端-服务器架构：始终是客户端/服务器连接，而不是，举例来说，与数据库的直接连接。\n",
    ">> * 可缓存 - 服务器响应必须是可缓存的。\n",
    ">> * 分层系统\n",
    ">> * 按需编码\n",
    "> * 对产品经理来说，REST是一套准则，遵循这些准则的API才能叫做RESTful API\n",
    "> * 一套准则意谓着一致性。这一致性让开发人员可以更轻松地使用多种不同的API。\n",
    "> * 由Roy Fielding 提出，用来描述互联系统架构。为什么称为 REST？Web 本质上由各种各样的资源组成，资源由 URI 唯一标识。浏览器（或者任何其它类似于浏览器的应用程序）将展示出该资源的一种表现方式，或者一种表现状态。如果用户在该页面中定向到指向其它资源的链接，则将访问该资源，并表现出它的状态。这意味着客户端应用程序随着每个资源表现状态的不同而发生状态转移，也即所谓 REST。\n",
    "REST 设计原则遵循 ROA（Resource-Oriented Architecture，面向资源的体系架构）。ROA 是一种把实际问题转换成 REST 式 Web 服务的方法，它使得 URI丶HTTP 和 XML 具有跟其他 Web 应用一样的工作方式。\n",
    ">> * ROA遵循以下的步骤：\n",
    ">>> * 分析应用需求中的数据集。\n",
    ">>> * 映射数据集到 ROA 中的资源。\n",
    ">>> * 对于每一资源，命名它的 URI。\n",
    ">>> * 为每一资源设计其 Representations。\n",
    ">>> * 用 hypermedia links 表述资源间的联系。\n",
    "\n",
    "### 4.(HTTP) Methods：HTTP方法\n",
    "* 使用API时，会使用称为HTTP方法的信息来请求信息。在REST下，名词是REST资源，动词则是HTTP标准的方法\n",
    "\n",
    "> * 不需要学习API特定的方法，REST API都使用相同的HTTP方法：\n",
    ">> * POST\n",
    ">> * GET\n",
    ">> * PUT\n",
    ">> * PATCH\n",
    ">> * DELETE\n",
    "> * 最常用的HTTP方法是创建(create)，读取(read)，更新(update)和删除(delete)信息，这4常见方法的首字母缩略词为CRUD\n",
    "> * 产品人员最常用的方法是POST和GET，它允许您创建或读取和检索信息。\n",
    "> * GET很简单，被认为是所有方法中最安全的，因为它不会更新任何信息。\n",
    "> * 以下是最常见的HTTP方法的摘要：\n",
    ">> * GET\n",
    ">>> * 用于读取/检索资源\n",
    ">>> * 执行GET方法时，响应包含您请求的信息。\n",
    ">>> * GET请求仅用于读取数据而不是更改数据。这意味着它们被认为是安全的。\n",
    ">> * POST\n",
    ">>> * 用于创建新资源。\n",
    ">>> * 例如，如果我们想使用Twilio API创建新的文本消息，我们将使用POST方法，因为这是您创建新资源的方式（资源是文本消息）。\n",
    ">> * PUT\n",
    ">>> * 用于更新/替换资源。\n",
    ">>> * 例如，更新用户的电子邮件地址。\n",
    ">> * DELETE\n",
    ">>> * 用于删除数据。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d4f84fab",
   "metadata": {},
   "source": [
    "&emsp;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91040eb9",
   "metadata": {},
   "source": [
    "# 2.人工智能（AI）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3fa00b56",
   "metadata": {},
   "source": [
    "## 人工智能\n",
    "> * 计算机视觉  \n",
    ">> * 图像识别  \n",
    ">> * 人脸识别  \n",
    "\n",
    "> * 自然语言处理  \n",
    ">> * 语音识别   \n",
    ">> * 语音合成  \n",
    "\n",
    "> * 认知与推理  \n",
    ">> * 机器学习  \n",
    " \n",
    "## 开发平台  \n",
    "> * 百度API  \n",
    ">> * 语音  \n",
    "> * 微软Azure（国际）  \n",
    ">> * 图像识别  \n",
    ">> * 机器学习  \n",
    "> * 高德API  \n",
    ">> * 地图  \n",
    "> * face++(国内)  \n",
    ">> * 图像识别  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "045a917f",
   "metadata": {},
   "source": [
    "&emsp;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdeb3a17",
   "metadata": {},
   "source": [
    "# 3.机器学习"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2fe8abe",
   "metadata": {},
   "source": [
    "* https://azure.microsoft.com/zh-cn/overview/what-is-machine-learning-platform/#benefits"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a0516ed",
   "metadata": {},
   "source": [
    "* https://www.bilibili.com/video/BV1VW411a74g?spm_id_from=333.999.0.0"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "865944a9",
   "metadata": {},
   "source": [
    "## 机器学习技术\n",
    "\n",
    "> * 监督式学习  \n",
    ">> * 使用带有标签或结构的数据集，让数据充当“老师”并“训练”机器，从而提高其作出预测或决策的能力。  \n",
    "> * 非监督式学习  \n",
    ">> * 使用没有任何标签或结构的数据集，通过将数据归入群集来寻找模式和关系。  \n",
    "> * 强化学习  \n",
    ">> * 一个代理（代表某人或某事执行操作的计算机程序）替代人工操作员，根据反馈循环帮助确定结果。  \n",
    "\n",
    "\n",
    "## 机器学习的作用\n",
    "> * 预测值\n",
    ">> * 回归算法有助于识别变量之间的因果关系，它从值创建模型，随后将其用于预测。回归研究有助于预测未来，从而帮助预测产品需求、预测销售数据或估算市场活动结果。  \n",
    "> * 发现异常情况\n",
    ">> * 异常检测算法通常用于发现潜在风险，能精确查找超出预期规范的数据。机器学习可用于解决各种问题，这方面的示例包括设备故障、结构缺陷、文本错误和欺诈事件。  \n",
    "> * 查找结构  \n",
    ">> * 聚类算法通常是机器学习的第一步，揭示数据集内的基础结构。聚类算法对常见事物进行归类，常用于市场细分，提供可帮助选择价格和预测客户偏好的见解。  \n",
    "> * 预测类别\n",
    ">> * 分类算法有助于确定正确的信息类别。分类与聚类相似，不同之处在于它应用于监督式学习，监督式学习中分配了预定义标签。  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "72aec993",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
